/**
 * 设备检测和路由跳转工具函数
 */

/**
 * 检测是否为移动设备
 * @returns {boolean} 是否为移动设备
 */
export const isMobileDevice = (): boolean => {
  const userAgent = navigator.userAgent.toLowerCase()
  const mobileKeywords = [
    'android', 'iphone', 'ipad', 'ipod', 'blackberry', 
    'windows phone', 'mobile', 'webos', 'opera mini',
    'samsung', 'huawei', 'xiaomi', 'oppo', 'vivo'
  ]
  return mobileKeywords.some(keyword => userAgent.includes(keyword))
}

/**
 * 检测是否为平板设备
 * @returns {boolean} 是否为平板设备
 */
export const isTabletDevice = (): boolean => {
  const userAgent = navigator.userAgent.toLowerCase()
  const tabletKeywords = ['ipad', 'tablet', 'kindle']
  return tabletKeywords.some(keyword => userAgent.includes(keyword))
}

/**
 * 检测屏幕尺寸是否为移动端
 * @returns {boolean} 是否为移动端屏幕
 */
export const isMobileScreen = (): boolean => {
  return window.innerWidth <= 768
}

/**
 * 综合检测是否应该使用移动端界面
 * @returns {boolean} 是否使用移动端界面
 */
export const shouldUseMobileUI = (): boolean => {
  return isMobileDevice() || isMobileScreen()
}

/**
 * 根据设备类型决定跳转路径（仅基于设备检测，不判断用户角色）
 * @param {string} userRole - 用户角色（保留参数以兼容现有调用）
 * @param {boolean} isMobile - 是否为移动设备
 * @returns {string} 跳转路径
 */
export const getRedirectPath = (userRole: string, isMobile?: boolean): string => {
  const mobile = isMobile ?? shouldUseMobileUI()
  
  // 调试日志
  console.log('getRedirectPath 调试:', {
    userRole,
    isMobile,
    mobile,
    shouldUseMobileUI: shouldUseMobileUI(),
    isMobileDevice: isMobileDevice(),
    isMobileScreen: isMobileScreen(),
    userAgent: navigator.userAgent
  })
  
  // 如果是移动设备，直接跳转到移动端页面（不再判断用户角色）
  if (mobile) {
    console.log('移动设备跳转到:', '/mobile/maintenance')
    return '/mobile/maintenance'
  }
  
  // 桌面端设备，根据角色跳转
  if (userRole === 'user') {
    console.log('维修工桌面端跳转到:', '/work-orders')
    return '/work-orders' // 普通用户在桌面端跳转到工单页面
  }
  
  console.log('默认跳转到:', '/dashboard')
  return '/dashboard' // 管理员跳转到仪表盘
}

/**
 * 获取设备信息
 * @returns {object} 设备信息对象
 */
export const getDeviceInfo = () => {
  return {
    isMobile: isMobileDevice(),
    isTablet: isTabletDevice(),
    isMobileScreen: isMobileScreen(),
    shouldUseMobileUI: shouldUseMobileUI(),
    userAgent: navigator.userAgent,
    screenWidth: window.innerWidth,
    screenHeight: window.innerHeight
  }
}

/**
 * 设备类型枚举
 */
export enum DeviceType {
  DESKTOP = 'desktop',
  TABLET = 'tablet',
  MOBILE = 'mobile'
}

/**
 * 获取设备类型
 * @returns {DeviceType} 设备类型
 */
export const getDeviceType = (): DeviceType => {
  if (isMobileDevice() && !isTabletDevice()) {
    return DeviceType.MOBILE
  }
  if (isTabletDevice()) {
    return DeviceType.TABLET
  }
  return DeviceType.DESKTOP
}